package parser.prestige.technologia.xml;

import parser.prestige.AbstractNode;
import parser.prestige.IXmlElement;

import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;
import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: msi
 * Date: 10.12.13
 * Time: 21:51
 * To change this template use File | Settings | File Templates.
 */
public class OperacjaTech extends AbstractNode implements IXmlElement {
    private String kodOperacja;
    private String kodMeldunekS1;
    private String produktTechIndeks;
    private String produktTechNazwa;
    private String produktTechLp;
    private String bomItemIndeks;
    private String bomItemNazwa;
    private String bomItemLp;
    private String ilosc;
    private String czas;
    private String sposobWyceny;
    private String sposobCzasu;
    private String nieWliczajDoKosztow;
    private String uwagi;
    private List<BomItem> items;
    private ProduktTech produktTech;

    public OperacjaTech(String kodOperacja, String kodMeldunekS1, String produktTechIndeks, String produktTechNazwa, String produktTechLp, String bomItemIndeks, String bomItemNazwa, String bomItemLp, String ilosc, String czas, String sposobWyceny, String sposobCzasu, String nieWliczajDoKosztow, String uwagi, List<BomItem> items, ProduktTech produktTech) {
        this.kodOperacja = kodOperacja;
        this.kodMeldunekS1 = kodMeldunekS1;
        this.produktTechIndeks = produktTechIndeks;
        this.produktTechNazwa = produktTechNazwa;
        this.produktTechLp = produktTechLp;
        this.bomItemIndeks = bomItemIndeks;
        this.bomItemNazwa = bomItemNazwa;
        this.bomItemLp = bomItemLp;
        this.ilosc = ilosc;
        this.czas = czas;
        this.sposobWyceny = sposobWyceny;
        this.sposobCzasu = sposobCzasu;
        this.nieWliczajDoKosztow = nieWliczajDoKosztow;
        this.uwagi = uwagi;
        this.items = items;
        this.produktTech = produktTech;
    }

    public OperacjaTech() {
        this.kodOperacja = "";
        this.kodMeldunekS1 = "";
        this.produktTechIndeks = "";
        this.produktTechNazwa = "";
        this.produktTechLp = "";
        this.bomItemIndeks = "";
        this.bomItemNazwa = "";
        this.bomItemLp = "";
        this.ilosc = "";
        this.czas = "";
        this.sposobWyceny = "";
        this.sposobCzasu = "";
        this.nieWliczajDoKosztow = "";
        this.uwagi = "";
        this.items = new ArrayList<BomItem>();
        this.produktTech = new ProduktTech();
    }

    @Override
    public void createAsNode(XMLEventWriter eventWriter, int tabValue) throws XMLStreamException {
        XMLEventFactory eventFactory = XMLEventFactory.newInstance();
        XMLEvent endLineEvent = eventFactory.createDTD("\n");
        XMLEvent tabulatorEvent = eventFactory.createDTD("\t");

        //TAG: <OperacjaTech>
        addTabs(eventWriter, tabValue);
        eventWriter.add(eventFactory.createStartElement("","","OperacjaTech"));
        eventWriter.add(endLineEvent);

        //skladowe OperacjaTech
        addNode(eventWriter, "KodOperacja", kodOperacja, tabValue + 1);
        addNode(eventWriter, "KodMeldunekS1", kodMeldunekS1, tabValue + 1);
        addNode(eventWriter, "ProduktTechIndeks", produktTechIndeks, tabValue + 1);
        addNode(eventWriter, "ProduktTechNazwa", produktTechNazwa, tabValue + 1);
        addNode(eventWriter, "ProduktTechLp", produktTechLp, tabValue + 1);
        addNode(eventWriter, "BomItemIndeks", bomItemIndeks, tabValue + 1);
        addNode(eventWriter, "BomItemNazwa", bomItemNazwa, tabValue + 1);
        addNode(eventWriter, "BomItemLp", bomItemLp, tabValue + 1);
        addNode(eventWriter, "Ilosc", ilosc, tabValue + 1);
        addNode(eventWriter, "Czas", czas, tabValue + 1);
        addNode(eventWriter, "SposobWyceny", sposobWyceny, tabValue + 1);
        addNode(eventWriter, "SposobCzasu", sposobCzasu, tabValue + 1);
        addNode(eventWriter, "NieWliczajDoKosztow", nieWliczajDoKosztow, tabValue + 1);
        addNode(eventWriter, "Uwagi", uwagi, tabValue + 1);

        for (BomItem bomItem : items) {
            bomItem.createAsNode(eventWriter, tabValue + 1);
        }

        produktTech.createAsNode(eventWriter, tabValue + 1);
        //koniec skladowych OperacjaTech

        //TAG: </OperacjaTech>
        addTabs(eventWriter, tabValue);
        eventWriter.add(eventFactory.createEndElement("", "", "OperacjaTech"));
        eventWriter.add(endLineEvent);
    }

    public String getKodOperacja() {
        return kodOperacja;
    }

    public void setKodOperacja(String kodOperacja) {
        this.kodOperacja = kodOperacja;
    }

    public String getKodMeldunekS1() {
        return kodMeldunekS1;
    }

    public void setKodMeldunekS1(String kodMeldunekS1) {
        this.kodMeldunekS1 = kodMeldunekS1;
    }

    public String getProduktTechIndeks() {
        return produktTechIndeks;
    }

    public void setProduktTechIndeks(String produktTechIndeks) {
        this.produktTechIndeks = produktTechIndeks;
    }

    public String getProduktTechNazwa() {
        return produktTechNazwa;
    }

    public void setProduktTechNazwa(String produktTechNazwa) {
        this.produktTechNazwa = produktTechNazwa;
    }

    public String getProduktTechLp() {
        return produktTechLp;
    }

    public void setProduktTechLp(String produktTechLp) {
        this.produktTechLp = produktTechLp;
    }

    public String getBomItemIndeks() {
        return bomItemIndeks;
    }

    public void setBomItemIndeks(String bomItemIndeks) {
        this.bomItemIndeks = bomItemIndeks;
    }

    public String getBomItemNazwa() {
        return bomItemNazwa;
    }

    public void setBomItemNazwa(String bomItemNazwa) {
        this.bomItemNazwa = bomItemNazwa;
    }

    public String getBomItemLp() {
        return bomItemLp;
    }

    public void setBomItemLp(String bomItemLp) {
        this.bomItemLp = bomItemLp;
    }

    public String getIlosc() {
        return ilosc;
    }

    public void setIlosc(String ilosc) {
        this.ilosc = ilosc;
    }

    public String getCzas() {
        return czas;
    }

    public void setCzas(String czas) {
        this.czas = czas;
    }

    public String getSposobWyceny() {
        return sposobWyceny;
    }

    public void setSposobWyceny(String sposobWyceny) {
        this.sposobWyceny = sposobWyceny;
    }

    public String getSposobCzasu() {
        return sposobCzasu;
    }

    public void setSposobCzasu(String sposobCzasu) {
        this.sposobCzasu = sposobCzasu;
    }

    public String getNieWliczajDoKosztow() {
        return nieWliczajDoKosztow;
    }

    public void setNieWliczajDoKosztow(String nieWliczajDoKosztow) {
        this.nieWliczajDoKosztow = nieWliczajDoKosztow;
    }

    public String getUwagi() {
        return uwagi;
    }

    public void setUwagi(String uwagi) {
        this.uwagi = uwagi;
    }

    public List<BomItem> getItems() {
        return items;
    }

    public void setItems(List<BomItem> items) {
        this.items = items;
    }

    public ProduktTech getProduktTech() {
        return produktTech;
    }

    public void setProduktTech(ProduktTech produktTech) {
        this.produktTech = produktTech;
    }
}
